win32: do not crash on invalid utf8 conversion
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Wed, 20 Mar 2013 22:12:56 +0000 (23:12 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Mar 2013 19:50:09 +0000 (15:50 -0400)
g_utf8_to_utf16() is not guaranteed to succeed. Check the error
and return if it failed.

https://bugzilla.gnome.org/show_bug.cgi?id=696232

gdk/win32/gdkproperty-win32.c

index 7a3671beb58145bd900c252dae6d1ead0189c487..a260322c2517b47218562395cb632e8a1705bb80 100644 (file)
@@ -150,6 +150,7 @@ _gdk_win32_window_change_property (GdkWindow    *window,
   guchar *ucptr;
   wchar_t *wcptr, *p;
   glong wclen;
+  GError *err = NULL;
 
   g_return_if_fail (window != NULL);
   g_return_if_fail (GDK_IS_WINDOW (window));
@@ -193,7 +194,13 @@ _gdk_win32_window_change_property (GdkWindow    *window,
              return;
            }
 
-         wcptr = g_utf8_to_utf16 ((char *) data, nelements, NULL, &wclen, NULL);
+         wcptr = g_utf8_to_utf16 ((char *) data, nelements, NULL, &wclen, &err);
+          if (err != NULL)
+            {
+              g_warning ("Failed to convert utf8: %s", err->message);
+              g_clear_error (&err);
+              return;
+            }
 
          wclen++;              /* Terminating 0 */
          size = wclen * 2;